package leetcode.editor.cn;

//给你一个正整数 n ，生成一个包含 1 到 n² 所有元素，且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 
//
// 
//
// 示例 1： 
//
// 
//输入：n = 3
//输出：[[1,2,3],[8,9,4],[7,6,5]]
// 
//
// 示例 2： 
//
// 
//输入：n = 1
//输出：[[1]]
// 
//
// 
//
// 提示： 
//
// 
// 1 <= n <= 20 
// 
// Related Topics 数组 矩阵 模拟 👍 525 👎 0

//Java：螺旋矩阵 II
public class SpiralMatrixIi_59{
    public static void main(String[] args) {
        Solution solution = new SpiralMatrixIi_59().new Solution();
        // TO TEST
    }
    
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int[][] generateMatrix(int n) {
        int[][] res = new int[n][n];
        int round = 0, num=1;
        while(n>0){
            int i=0,j=0;
            int count = n==1? 1:(n-1)*4;
            for (int k = 0; k < count; k++) {
                res[i+round][j+round] = num++;
                if (k < n - 1) { //圈的上
                    j++;
                } else if (k < (n-1)*2) { //圈的右
                    i++;
                } else if (k < (n-1)*3) { //圈的下
                    j--;
                } else { //圈的左
                    i--;
                }
            }
            n-=2;
            round++;
        }
        return res;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
